"""
Copyright 2012 Wieser Dietmar, Margit Mutschlechner.

This file is part of Multimedia Social Networking Platform.

Multimedia Social Networking Platform is free software: 
you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.

Multimedia Social Networking Platform is distributed
in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with Multimedia Social Networking Platform.  
If not, see <http://www.gnu.org/licenses/>.

"""

import xml.parsers.expat
from msnp.model.ConnectionModel import ConnectionHost
from msnp.logger import Logger

__hosts = []

__TAG_HOST = "host"
__TAG_NAME = "name"

def __start_element(name, attrs):
    """This function is called by the parser on every starting tag. It creates a ConnectionHost object and adds it to the local list.
    
    Args:
        name: A String containing the name of the tag.
        attrs: A list of Strings containing the attributes of the tag.
    """
    global __hosts
    global __TAG_HOST
    global __TAG_NAME
    
    try:
        if name == __TAG_HOST:
            host = ConnectionHost(attrs.get(__TAG_NAME))
            __hosts.append(host)
    except:
        Logger.info("tag unknown in ConnectionAccessor.__start_element")

def getHostList(filename):
    """This function reads the hosts file.
    
    Args:
        filename: A String containing the name of the static peers file.
        
    Returns:
        It returns a list of ConnectionHost objects containing the hosts. 
    """
    global __hosts
    f = open(filename, 'r')
    s = f.read()
    p = xml.parsers.expat.ParserCreate()
    p.StartElementHandler = __start_element
    p.Parse(s, 1)
    return __hosts
